import type { PageParam, PageResult } from '@vben/request';
import type { Dayjs } from 'dayjs';

import { requestClient } from '#/api/request';

export namespace OrderHistoryApi {
  /** 订单信息 */
  export interface OrderHistory {
    id: number; // 订单ID
    orderCode?: string; // 订单编码
    bookingId: number; // 预约ID
    userId?: number; // 用户ID
    handCardId: number; // 手牌ID
    handCardNumber: string; // 手牌号码
    totalAmount?: number; // 总金额
    discountAmount: number; // 优惠金额
    payableAmount?: number; // 应付金额
    pointsUsed: number; // 使用积分
    pointsEarned: number; // 获得积分
    payStatus?: string; // 支付状态
    payMethod: string; // 支付方式
    payTime: string | Dayjs; // 支付时间
    transactionNo: string; // 第三方交易号
    startTime?: string | Dayjs; // 开始时间
    endTime: string | Dayjs; // 结束时间
    durationMinutes: number; // 总时长(分钟)
    status?: string; // 订单状态
    cancelReason: string; // 取消原因
    notes: string; // 备注
    storeId?: number; // 门店ID
    orgId?: number; // 组织ID
    orderType: string; // 订单类型
    orderSource: string; // 订单来源
    expectedCompletionTime: string | Dayjs; // 预期完成时间
    actualCompletionTime: string | Dayjs; // 实际完成时间
    serviceQualityScore: number; // 服务质量评分
    customerSatisfactionScore: number; // 客户满意度评分
    urgentFlag: boolean; // 是否加急
    vipLevel: string; // VIP等级
    archiveTime: string | Dayjs; // 归档时间
    archivePeriod: string; // 归档期间
  }
}

/** 查询订单分页 */
export function getOrderHistoryPage(params: PageParam) {
  return requestClient.get<PageResult<OrderHistoryApi.OrderHistory>>('/spa/order-history/page', { params });
}

/** 查询订单详情 */
export function getOrderHistory(id: number) {
  return requestClient.get<OrderHistoryApi.OrderHistory>(`/spa/order-history/get?id=${id}`);
}

/** 新增订单 */
export function createOrderHistory(data: OrderHistoryApi.OrderHistory) {
  return requestClient.post('/spa/order-history/create', data);
}

/** 修改订单 */
export function updateOrderHistory(data: OrderHistoryApi.OrderHistory) {
  return requestClient.put('/spa/order-history/update', data);
}

/** 删除订单 */
export function deleteOrderHistory(id: number) {
  return requestClient.delete(`/spa/order-history/delete?id=${id}`);
}


/** 导出订单 */
export function exportOrderHistory(params: any) {
  return requestClient.download('/spa/order-history/export-excel', { params });
}

